package com.googlecode.olabs.common.client.contact.field;

import java.io.Serializable;
import java.util.List;
import java.util.Set;

import com.googlecode.olabs.common.client.contact.ContactException;

public interface Field extends Serializable, Cloneable {

	/**
	 * Get a string containing the type
	 * 
	 * @return vCard type
	 */
	String getType();

	boolean addSubType(String subType);

	boolean removeSubType(String subType);

	/**
	 * Get a Set (copied) of subtypes, if any
	 * 
	 * @return a Set of Strings
	 */
	Set<String> getSubTypes();

	void clearSubTypes();

	List<String> getValue();

	void setValue(List<String> value) throws ContactException;

	Object clone();

}
